#!/bin/sh
# Initial script for Linux Live Kit
# Author: Tomas M <http://www.linux-live.org/>

#exec 2>/var/log/init.trace
#PS4='${LINENO}: '
#set -xv

export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin

LIVEKITNAME="minios"
BEXT="sb"

. /lib/livekitlib

transfer_initramfs

MEMORY=/memory
CHANGES=$MEMORY/changes
UNION=$MEMORY/union
DATAMNT=$MEMORY/data
BUNDLES=$MEMORY/bundles

header "MiniOS Live Kit init <https://minios.dev>"

init_proc_sysfs

debug_start
                                                                                                                                                      debug_shell
# load some modules manually first, then modprobe everything we have
init_devs
init_aufs
if [ "$KERNEL_TYPE" != "cloud" ]; then
    init_zram
fi

# modprobe the drivers needed to load in QEMU and VMware virtual machines, if any
modprobe_cloud

# modprobe all devices excluding network drivers
modprobe_everything -v /drivers/net/

# initialize blkid cache file
init_blkid_cache

# find data dir with filesystem bundles
DATA="$(find_data 45 "$DATAMNT")"
check_data_found "$DATA"
                                                                                                                                                      debug_shell
# setup persistent changes, if possible
persistent_changes "$DATA" "$CHANGES"
                                                                                                                                                      debug_shell
# copy to RAM if needed
DATA="$(copy_to_ram "$DATA" "$CHANGES")"

# mount bundles
mount_bundles "$DATA" "$BUNDLES"
                                                                                                                                                      debug_shell
# init aufs union, or setup overlayfs union
init_union "$CHANGES" "$UNION" "$BUNDLES"

# add data to aufs union
union_append_bundles "$BUNDLES" "$UNION"
                                                                                                                                                      debug_shell
# rootcopy
copy_rootcopy_content "$DATA" "$UNION"

# MiniOS setup
minios_boot "$DATA" "$UNION"
                                                                                                                                                      debug_shell
# create fstab
fstab_create "$UNION" "$DATAMNT"
                                                                                                                                                      debug_shell
# run user custom preinit
user_preinit "$DATA" "$UNION"

header "Live Kit done, starting $SYSTEMNAME"
change_root "$UNION"

header "!!ERROR occured, you shouldn't be here.!!"
/bin/sh
